package com.example.musicplayer.util;
import android.os.*;
import java.io.*;
import java.util.*;

public class MediaListUtil
{
	ArrayList<String> pathList=new ArrayList<String>();//文件路径列表
	ArrayList<String> nameList=new ArrayList<String>();//文件名字列表
	public final static int TYPE_MUSIC=0;//定义常量TYPE_MUSIC
	public final static int TYPE_VIDEO=1;//定义常量TYPE_VIDEO
	private int type;
	
	/**
	 * 根据文件类型、路径获取文件列表
	 * @param type 文件类型
	 * @param path 文件路径
	 * @return 文件列表
	 */
	private ArrayList<String> getFileList(int type,String path)
	{
		File fileList[]=new File(path).listFiles();//获取文件列表
		//采用递归循环获取文件列表
		for (File file:fileList)
		{
			if (file.isDirectory())
			{
				getFileList(type,file.getAbsolutePath());//如果是文件夹则往下一级寻找
			}
			else
			{
				if(TYPE_MUSIC==type){
					if (isMusicFile(file.getAbsolutePath()) && !nameList.contains(file.getAbsolutePath()))
					{
						//如果文件名匹配给定的文字则把文件路径它加入文件路径列表中
						pathList.add(file.getAbsolutePath());
						int index=file.getName().lastIndexOf(".");
						String fileName=file.getName().substring(0,index);//获取文件名
						//如果文件名匹配给定的文字则把文件路径它加入文件路径列表中
						nameList.add(fileName);
					}
				}else if(TYPE_VIDEO==type){
					if (isVideoFile(file.getAbsolutePath()) && !nameList.contains(file.getAbsolutePath()))
					{
						//如果文件名匹配给定的文字则把文件路径它加入文件路径列表中
						pathList.add(file.getAbsolutePath());
						int index=file.getName().lastIndexOf(".");
						String fileName=file.getName().substring(0,index);//获取文件名
						//如果文件名匹配给定的文字则把文件路径它加入文件路径列表中
						nameList.add(fileName);
					}
				}
				
			}

		}
		return pathList;
	}
	
	/**
	 * 根据文件路径获取子目录文件列表
	 * @param fileIndex //文件路径
	 * @return //文件列表
	 */
	private ArrayList<String> getFileList(String fileIndex)
	{
		getNameList(type);//获取指定类型的文件的列表
		ArrayList<String> tempNameList=new ArrayList<String>();//新建ArrayList
		ArrayList<String> tempPathList=new ArrayList<String>();//新建ArrayList
		for(int i=0;i<nameList.size();i++){
			if(nameList.get(i).contains(fileIndex)){
				tempNameList.add(nameList.get(i));//添加文件名数据
				tempPathList.add(pathList.get(i));//添加文件路径数据
			}
		}
		nameList=tempNameList;
		pathList=tempPathList;
		return pathList;
	}
	
	
	/**
	 * 获取指定类型文件列表
	 * @param type 指定类型
	 * @return  文件列表
	 */
	public ArrayList<String> getNameList(int type)
	{
		clearList();
		this.type=type;
		Object obj1=DataSaveLoad.load("nameList"+type);
		Object obj2=DataSaveLoad.load("pathList"+type);
		if(obj1==null||obj2==null){
			String path=Environment.getExternalStorageDirectory().getAbsolutePath();
			getFileList(type,path);
			DataSaveLoad.save(nameList,"nameList"+type);
			DataSaveLoad.save(pathList,"pathList"+type);
		}else{
			nameList=(ArrayList<String>)obj1;
			pathList=(ArrayList<String>)obj2;
		}
		return nameList;
	}
	
	/**
	 * 获取指定类型,以及关键字的文件列表
	 * @param type 类型
	 * @param fileIndex 要匹配的关键字
	 * @return
	 */
	public ArrayList<String> getNameList(int type,String fileIndex)
	{
		clearList();
		this.type=type;
		getFileList(fileIndex);
		return nameList;
	}
	
	public String getFilePathByIndex(int index){
		return pathList.get(index);
	}
	
	public String getFileNameByIndex(int index){
		return nameList.get(index);
	}
	
	public int getIndexByPath(String path){
		int index=0;
		if(pathList.contains(path)){
			index=pathList.indexOf(path);
		}
		return index;
	}
	
	private void clearList(){
		pathList.clear();
		nameList.clear();
	}
	
	public int getCount(){
		return pathList.size()-1;
	}
	
	private boolean isMusicFile(String path){
		if(path.endsWith(".mp3")||path.endsWith(".wav")){
			return true;
		}
		return false;
	}
	
	private boolean isVideoFile(String path){
		if(path.endsWith(".avi")||path.endsWith(".rmvb")||path.endsWith(".mp4")||path.endsWith(".pneg")){
			return true;
		}
		return false;
	}}
